package br.com.senacrs.control;

import br.com.senacrs.dao.DaoFactory;
import br.com.senacrs.dao.UsuarioSistemaDao;
import br.com.senacrs.model.UsuarioSistemaEN;
import br.com.senacrs.validation.UsuarioSistemaVal;
import java.util.List;

public class UsuarioSistemaCR implements ControlCR<UsuarioSistemaEN> {

    private UsuarioSistemaDao dao;
    private UsuarioSistemaVal validation;
    
    public UsuarioSistemaCR() {
        this.dao = new DaoFactory().getUsuarioSistemaDao();
        this.validation = new UsuarioSistemaVal();
    }
    
    @Override
    public void insert(UsuarioSistemaEN objeto) {
        this.validation.validateInsert(objeto);
        this.dao.insert(objeto);
    }

    @Override
    public void delete(UsuarioSistemaEN objeto) {
        this.validation.validateDelete(objeto);
        this.dao.delete(objeto);
    }

    @Override
    public void update(UsuarioSistemaEN objeto) {
        this.validation.validateUpdate(objeto);
        this.dao.update(objeto);
    }

    @Override
    public List<UsuarioSistemaEN> selectAll() {
       this.validation.validateSelectAll();
       return this.dao.selectAll();
    }

    @Override
    public List<UsuarioSistemaEN> selectAllOrderBy(String order) {
        this.validation.validateSelectAllOrderBy(order);
        return this.dao.selectAllOrderBy(order);
    }

    @Override
    public UsuarioSistemaEN selectOne(Long id) {
        this.validation.validateSelectOne(id);
        return (UsuarioSistemaEN) this.dao.selectOne(id);
    }

    @Override
    public UsuarioSistemaEN selectOneGet(Long id) {
        this.validation.validateSelectOneGet(id);
        return (UsuarioSistemaEN) this.dao.selectOneGet(id);
    }

    @Override
    public List<UsuarioSistemaEN> selectWhere(String criterio, String string) {
        this.validation.validateSelectWhere(criterio, string);
        return this.dao.selectWhere(criterio, string);
    }

    @Override
    public List<UsuarioSistemaEN> selectWhere(String criterio, Long valor) {
        this.validation.validateSelectWhere(criterio, valor);
        return this.dao.selectWhere(criterio, valor);
    }

    @Override
    public List<UsuarioSistemaEN> selectWhere(String criterio, String criterioJoin, Long valor) {
        this.validation.validateSelectWhere(criterio, criterioJoin, valor);
        return this.dao.selectWhere(criterio, criterioJoin, valor);
    }  
}
